﻿#include <iostream>

int main()
{
    /*
    * leftVal 是左值 
    * 1 是右值
    */

	int leftVal = 1;
    int& lRef = leftVal; //正确 ，
    int* Addre = &leftVal;    // 注意 取地址 与引用的不同
    // int& lRef_wrong = 1; //错误 ， 1 是右值
      int& lRef_forward = std::forward<int&>(1); //正确 ， std::forward<>() 可以把值转换为  左值，右值
   const  int& lRef_wrong = 1; //正确 ，const 的引用无法修改，符合定义  ，非 const 引用 无法指向右值

   int&& reghtRef = 1; //正确，右值引用
   // int&& reghtRef = leftVal; //错误，右值引用 引用了一个左值
  
    int&& reghtRef =  std::move(reghtRef); //正确 ， std::forward<>() 可以把值转换为  左值，右值
    int&& reghtRef_forward = std::forward<int&&>(reghtRef); //正确，std::move 可以把左值转换为右值
	std::cout << "Hello World!\n";
   
}

